]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
a11y: also set the WM HighContrast theme when switch is flipped
authorCosimo Cecchi <cosimoc@gnome.org>
Tue, 13 Nov 2012 14:34:20 +0000 (09:34 -0500)
committerCosimo Cecchi <cosimoc@gnome.org>
Tue, 13 Nov 2012 16:24:18 +0000 (11:24 -0500)
Now that we have a HighContrast-specific WM theme.

https://bugzilla.gnome.org/show_bug.cgi?id=688256

js/ui/status/accessibility.js

index 0c4f1ca507e341500a83e81b9537e450cbc3a200..50f52f7be07098dc4f5a784869cca17a7743c7cc 100644 (file)
@@ -27,6 +27,7 @@ const KEY_VISUAL_BELL      = 'visual-bell';
 const DESKTOP_INTERFACE_SCHEMA = 'org.gnome.desktop.interface';
 const KEY_GTK_THEME      = 'gtk-theme';
 const KEY_ICON_THEME     = 'icon-theme';
+const KEY_WM_THEME       = 'theme';
 const KEY_TEXT_SCALING_FACTOR = 'text-scaling-factor';
 
 const HIGH_CONTRAST_THEME = 'HighContrast';
@@ -101,28 +102,35 @@ const ATIndicator = new Lang.Class({
     },
 
     _buildHCItem: function() {
-        let settings = new Gio.Settings({ schema: DESKTOP_INTERFACE_SCHEMA });
-        let gtkTheme = settings.get_string(KEY_GTK_THEME);
-        let iconTheme = settings.get_string(KEY_ICON_THEME);
+        let interfaceSettings = new Gio.Settings({ schema: DESKTOP_INTERFACE_SCHEMA });
+        let wmSettings = new Gio.Settings({ schema: WM_SCHEMA });
+        let gtkTheme = interfaceSettings.get_string(KEY_GTK_THEME);
+        let iconTheme = interfaceSettings.get_string(KEY_ICON_THEME);
+        let wmTheme = wmSettings.get_string(KEY_WM_THEME);
         let hasHC = (gtkTheme == HIGH_CONTRAST_THEME);
         let highContrast = this._buildItemExtended(
             _("High Contrast"),
             hasHC,
-            settings.is_writable(KEY_GTK_THEME) && settings.is_writable(KEY_ICON_THEME),
+            interfaceSettings.is_writable(KEY_GTK_THEME) &&
+            interfaceSettings.is_writable(KEY_ICON_THEME) &&
+            wmSettings.is_writable(KEY_WM_THEME),
             function (enabled) {
                 if (enabled) {
-                    settings.set_string(KEY_GTK_THEME, HIGH_CONTRAST_THEME);
-                    settings.set_string(KEY_ICON_THEME, HIGH_CONTRAST_THEME);
+                    interfaceSettings.set_string(KEY_GTK_THEME, HIGH_CONTRAST_THEME);
+                    interfaceSettings.set_string(KEY_ICON_THEME, HIGH_CONTRAST_THEME);
+                    wmSettings.set_string(KEY_WM_THEME, HIGH_CONTRAST_THEME);
                 } else if(!hasHC) {
-                    settings.set_string(KEY_GTK_THEME, gtkTheme);
-                    settings.set_string(KEY_ICON_THEME, iconTheme);
+                    interfaceSettings.set_string(KEY_GTK_THEME, gtkTheme);
+                    interfaceSettings.set_string(KEY_ICON_THEME, iconTheme);
+                    wmSettings.set_string(KEY_WM_THEME, wmTheme);
                 } else {
-                    settings.reset(KEY_GTK_THEME);
-                    settings.reset(KEY_ICON_THEME);
+                    interfaceSettings.reset(KEY_GTK_THEME);
+                    interfaceSettings.reset(KEY_ICON_THEME);
+                    wmSettings.reset(KEY_WM_THEME);
                 }
             });
-        settings.connect('changed::' + KEY_GTK_THEME, function() {
-            let value = settings.get_string(KEY_GTK_THEME);
+        interfaceSettings.connect('changed::' + KEY_GTK_THEME, function() {
+            let value = interfaceSettings.get_string(KEY_GTK_THEME);
             if (value == HIGH_CONTRAST_THEME) {
                 highContrast.setToggleState(true);
             } else {
@@ -130,11 +138,16 @@ const ATIndicator = new Lang.Class({
                 gtkTheme = value;
             }
         });
-        settings.connect('changed::' + KEY_ICON_THEME, function() {
-            let value = settings.get_string(KEY_ICON_THEME);
+        interfaceSettings.connect('changed::' + KEY_ICON_THEME, function() {
+            let value = interfaceSettings.get_string(KEY_ICON_THEME);
             if (value != HIGH_CONTRAST_THEME)
                 iconTheme = value;
         });
+        wmSettings.connect('changed::' + KEY_WM_THEME, function() {
+            let value = wmSettings.get_string(KEY_WM_THEME);
+            if (value != HIGH_CONTRAST_THEME)
+                wmTheme = value;
+        });
         return highContrast;
     },